{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# NAME_Assignment_#3 Interpolation\n",
    "* 姓名\n",
    "* 学号\n",
    "* 邮箱"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.1 Lagrange interpolation\n",
    "拉格朗日插值的基本公式为：\n",
    "\n",
    "$$P_{n-1}(x) = a_1L_1(x)+a_2L_2(x)+...+a_iL_i(x)+...+a_nL_n(x)$$\n",
    "\n",
    "或者\n",
    "\n",
    "$$P_{n-1}(x) = \\sum_{i=1}^{n}a_iL_i(x)$$\n",
    "\n",
    "其中：\n",
    "\n",
    "$$a_i = y_i$$\n",
    "\n",
    "$$L_i(x)=\\frac{x-x_1}{x_i-x_1}\n",
    "\\frac{x-x_2}{x_i-x_2}\n",
    "\\frac{...}{...}\n",
    "\\frac{x-x_{i-1}}{x_i-x_{i-1}}\n",
    "\\frac{x-x_{i+1}}{x_i-x_{i+1}}\n",
    "\\frac{...}{...}\n",
    "\\frac{x-x_n}{x_i-x_n}$$\n",
    "\n",
    "或者\n",
    "\n",
    "$$L_i(x)=\\prod_{j \\neq i}^{n}\\frac{x-x_j}{x_i-x_j}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从$L_i(x)$的表达式可以看出，其最高次指数为$n-1$，且不存在$\\frac{x-x_i}{x_i-x_i}$项，避免除0错误。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用python进行拉格朗日插值的核心在于用两个循环分别计算$P_{n-1}(x) = \\sum_{i=1}^{n}a_iL_i(x)$和$L_i(x)=\\prod_{j \\neq i}^{n}\\frac{x-x_j}{x_i-x_j}$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 1. 写出拉格朗日插值的python函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# python fucntion for Lagrange interpolation\n",
    "def interpLag(x, xiList, yiList):\n",
    "    # 计算由xiList和yiList已知数据点的拉格朗日插值多项式函数\n",
    "    \n",
    "    # 首先将xiList和yiList转换成numpy数组，以便于进行数据处理\n",
    "    xiList = np.array(xiList)\n",
    "    yiList = np.array(yiList)\n",
    "    \n",
    "    # 用numberOfxiList表示已知数据点的数目，从而用于后面的循环\n",
    "    numberOfxiList = xiList.size\n",
    "    \n",
    "    # 用y来承载最终计算插值点x处的拉格朗日插值多项式函数的值\n",
    "    y = 0\n",
    "    \n",
    "    # 第一个循环计算最外层的求和迭代\n",
    "    for i in range(numberOfxiList):\n",
    "        \n",
    "        # 计算ai\n",
    "        ai = yiList[i]\n",
    "        \n",
    "        # 初始化li为1\n",
    "        li = 1\n",
    "        \n",
    "        # 第二个循环计算内层的求积迭代\n",
    "        for j in range(numberOfxiList):\n",
    "            \n",
    "            # 当i不等于j的时候才需要进行乘除操作\n",
    "            if i != j:\n",
    "                li = li * (x - xiList[j]) / (xiList[i] - xiList[j])\n",
    "                \n",
    "        # 将每个li乘以ai并加到y上面\n",
    "        y = y + ai * li\n",
    "        \n",
    "    return y # 返回y值以便进行外部处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 2. 给出插值的数据信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入numpy和画图第三方库matplotlib\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 这是一个magic函数，告诉jupyter notebook如何处理所画出的图的呈现形式，后面的inline意思是将图片插入notebook的页面内显示\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 任意给定已知数据点，这里我们给出了5个数据点\n",
    "xiList = [0, 1, 1.5, 3, 5]\n",
    "yiList = [-1, 2, 3, 1, 3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Y')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画图展示已知数据点的分布情况\n",
    "plt.figure(figsize = (8, 6))\n",
    "plt.scatter(xiList, yiList, c = 'white', edgecolors = 'red', s = 100)\n",
    "plt.xlabel(\"X\", fontsize = 20)\n",
    "plt.ylabel(\"Y\", fontsize = 20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 3. 插值计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 首先要定义在哪些x处进行插值，这里最好给的数据密集一些\n",
    "# 注意下面使用np.arange(0, 5.1, 0.1)返回的结果不包含5.1\n",
    "\n",
    "xList = np.arange(0, 5.1, 0.1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面代码利用python特有的列表解析语法（List comprehension），将一个循环插入改成一行代码的形式，即\n",
    "```python\n",
    "y = [f(x) for x in someList]\n",
    "```\n",
    "* 注意语法形式，中括号在最外侧\n",
    "* for循环在后面\n",
    "* 函数f可以是任意函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 利用我们上面定义的interpLag函数计算每一个x处的y值，并将结果保存在yList里面\n",
    "\n",
    "yList = [interpLag(x, xiList, yiList) for x in xList]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x254949e0a88>]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfkAAAF8CAYAAADMy8KPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd5hV1dXH8e+mKQoWpHcFNHZjsCCWqIhgwAKvPaJUQUSENxLRJIpGjGIXQTqiosbYUKSIDaMMihUUZZzoAAoCEkRB+n7/WMw7oANMuffuc879fZ5nnmFmbpifk+Guu89Ze23nvUdERESSp1zoACIiIpIeKvIiIiIJpSIvIiKSUCryIiIiCaUiLyIiklAq8iIiIglVIXSAVKtevbpv3Lhx6BgiIiIZ8f7776/w3tco6muJK/KNGzdmzpw5oWOIiIhkhHMuf0df0+V6ERGRhFKRFxERSSgVeRERkYRSkRcREUkoFXkREZGEUpEXERFJKBV5ERGRhFKRFxERSSgVeRERkYRSkRcREUkoFXkREZGEStzsepHIWbUKPvwQypeHvfYqfKtaFXbbLXQ6EUkwFXmRVFu8GP79b3jrLXs/dy54X/RjK1Wygr/33nDKKXDRRXDqqVBB/zRFpOz0TCJSVj/9BE8+CW++aUX966/t81WqQIsW0LEjHH+8reRXr7a3H38s/PPq1bBsGTz9NIwdCzVqwP/8jxX8E0+EcrqrJiKloyIvUlrr1sGIETB4sBXpWrXgpJPg2mutOB95ZMlW5OvWwZQp9oJh/HgYPhzq1oULLoALL4TjjgPn0vafIyLJ4/yOLiPGVPPmzb3Ok5e02rQJHnkEBg2CRYvs8vqtt8IJJ6SuCP/0E7z0Ejz1FLz8MmzYYJfzH34YfvOb1HwPEUkE59z73vvmRX1N1wFFimvLFiu6hx4K3bpBnTowYwa89hq0bJnaVXaVKna5/rnn7CrB0KHw8cd2deDmm23VLyKyCyryIrviPUyeDEcfbYW3UiV44QXIyYHTT0//9997b+jdGz7/3O7VDxpkxf6NN9L/vUUk1lTkRXbm55/hiiugXTtYswYmTrQV9dlnZ/7+eK1a8PjjMG2a3TI49VTo3Bm+/z6zOUQkNlTkRXZk0SJrpJswwS6Rf/YZXHxx+G731q1tW97118Njj9k9+gkTdrxNT0Syloq8ZK+8POjXz1bI5cvb+3797PMzZ8Lvfge5uTBpEtx0E1SsGDpxoT32gNtvhw8+gGbN4PLLrQtf9+pFomdnzzVppiIv2WnKFNu7XrkyvPMOrF9v73ff3e53n3YaVKsGs2dD+/ah0+7Y4Yfb3vw77oB//QvatIEffgidSkQK7Oi5pnJl+/yUKWn99pHeJ++c2x2YCeyGZf2X9/6msKkk9vLyoFMnW6G3aFH4+Xr14Lvv7N57xYq2Xz0O29XKlYMBAyz/FVfAySfbE0fduqGTiWS3HT3XNGli8zXat7f+npwc+1waRH0lvx44zXt/JHAU0MY5d3zgTBJ3Q4dC9+7b/6NbvNj2oY8bB3/7G/Tvb/e54+TSS20XQF6e7dlfsCB0IpHsVtRzzbZatLDtuA89lLYIkS7y3vy09cOKW9/UXSRlM3EidO1a+PEHH0Dz5tZY99xztkWte3d7XNy0bm1b69autb37774bOpFI9vrlc82IEdt/DFbk0/hcE+kiD+CcK++c+whYBrzivZ9dxGN6OOfmOOfmLF++PPMhJV5WrIBGjezP8+dbYdx9d7v/fu659vmGDe1xcdS8Obz9tp1yd+qpMHVq6EQi2Wnb5xqA11+3My62lebnmsgXee/9Zu/9UUB94Fjn3GFFPGak97659755jRo1Mh9S4qV6dcjPt7fWrW2+/IwZcMghhY9ZuNAeF1fNmllzz4EH2n2/Rx8NnUgk+xQ81xTIz9++6EPan2siX+QLeO9XAW8AbQJHkbi75BJ44AE44wybET99OjRtuv1jRo+2x8VZ7dq2ajjpJGv+GTo0dCKR7HLJJTBmTOHHRRX5ND/XRL27vgaw0Xu/yjlXGWgF3BE4lsRdp05wzDHWQf/qq3DEEdt/fdYs+4eXkxMmXyrttZd12l94IVxzDdSvX3hLQkTS6+qrbZtc+/Y2FnvJku2LfAaea6K+kq8DvO6c+wR4D7sn/1LgTBJna9dCnz42krZSJXjxRetG37jR3g8caFtaJkxI25aWjNttN3jiCXthc+ml8P77oROJZIcmTey55OyzoW9f+1z9+hl9rol0kffef+K9/633/gjv/WHe+1tCZ5IY27ABOna0V89PPGFd9evXWxd65cr2fv16e1Xdtm3otKlVubLt1a1Rw1YVixaFTiSSHdq2teeUgua6Hj0y+lyj8+QlO2zebKvYp56CUaNs20o2+vRT20PfuLFNyqtaNXQikewwdqxtn8vLgwMOSOlfrfPkJbt5D1ddZQV+yJDsLfAAhx5q428//dTu02/aFDqRSHZYuNBuE9avn9FvqyIvyTd4MIwcaffA/vSn0GnCO+MMGDbMGvKuvVan14lkQn6+jZquVCmj3zbS3fUiZfbGGzam9pJL4LbbQqeJjh49bOzt3XfbXvprrgmdSCTZito+lwFayUtyffednf/erJmNk3QudKJoueMO207Xrx+8pE0rImmlIi+SQps3wx//CKtWwdNPQ5UqoRNFT/ny8Nhj8NvfwkUXwYcfhk4kkkxbttiOFhV5kRQZPNhG1Q4dameuS9H23NNmBVSrBh06wOrVoROJJM+SJTaLQ0VeJAVefx1uvtlW8l26hE4TfXXq2M6DhQsLB3aISOoUzK9XkRcpo+++sya7Aw+E4cN1H764WrSAv/wFxo+3LXYikjoq8iIpUDDw5ocfdB++NP7yFzj2WOu8/+ab0GlEkqOgyDdsmPFvrSIvyXHbbXbgzNChcNivTiSWXalY0Rrx1q+HK66wZiERKbv8fOt7CbDwUJGXZHjtNbsPf9ll0Llz6DTx1awZ3HefNS0+8EDoNCLJEGj7HKjISxIsXWr34X/zG92HT4Vu3ex0rOuvh7lzQ6cRiT8VeZFS8h66d7etX//8p20Jk7Jxzs643mcf63FYty50IpH48l5FXqTUnn7aprX9/e+6D59KNWrYqVlz58KNN4ZOIxJfK1fCmjUq8iIl9t//2sz13/1Os9fT4ayz7PS+e+6xhkYRKbmA2+dARV7ibMAAWLHCzoevoLOW0mLIEOt1uPxyW5GISMmoyIuUwptv2n3j/v1t9rqkxx57wOOP25Ch3r1DpxGJn4UL7b2KvEgxrVtnA1sOOMC2zUl6HX20Hdf75JMwfXroNCLxkp9vL5b32y/It1eRl/i57TY7C/3hh+0fj6TfgAHQtClcfbUNyxGR4inorA+0tVdFXuJl3jz4xz9s6M0ZZ4ROkz12280mCebmwl13hU4jEh8Bt8+BirzEyebNtid+n32s41sy68wzoWNHu5Ly9deh04jEg4q8SDENHw45OXDvvVC9eug02enee+2y47XXhk4iEn1r1tgOIBV5kV1YtAgGDoTWrW0Km4TRoIE14b3wAkyeHDqNSLQF7qwHFXmJA++t4WvzZs2mj4J+/eDgg6FPH/j559BpRKIr8B55UJGXOHj2WZg0CW65xbbNSViVKlkT3ldfwR13hE4jEl0q8iK78PPPNvDmyCN1HzhKTjsNLrrIdjrk5YVOIxJN+fk2jbNOnWARVOQl2u6/3+5r3XuvRtdGzd1326q+Tx+7pSIi28vPtz6W8uWDRVCRl+hatgwGD4b27eHUU0OnkV+qWxcGDYIpU6wRT0S2l58PDRsGjaAiL9E1aBCsXQt33hk6iezI1VfbEb99+9p2IREpFHiPPKjIS1TNnw8jRsCVV9opaBJNFSvCsGF2S+W220KnEYmOjRvh229V5EWKNGAA7LmnDqCJg5NOsjHDd99d2E0sku0WL4YtW1TkRX7ltdfgpZfghhugRo3QaaQ4brvN5hfcdFPoJCLREIHtc6AiL1GzZQv86U/WrNK3b+g0UlwNGtj9+QkT7BAhkWwXgWl3oCIvUfPoo/Dhh3D77bD77qHTSEkMHAhVq9oVGJFsV7CSb9AgaAwVeYmOtWvhxhvhmGNs0IrEy377wfXXw4svwr//HTqNSFj5+VC7dvDFioq8RMc998A331gDVzn9asZS37423ev66zUgR7JbBLbPgYq8RMXSpTYi9bzzrFtb4mmPPaz57u23rXlSJFupyIts46abYP16HXiSBF26QLNmdo9+8+bQaUQyb8sWa7xTkRfBurFHj4arrrLiIPFWsaJtqfv0U2ukFMk2y5bZokVFXgS7f1u1Kvztb6GTSKr8z/9A8+b2/+m6daHTiGRWRPbIg4q8hPbuuzB5sk2422+/0GkkVZyzHotFi2zsrUg2UZEX2WrQIKhWzY4rlWQ5/XQ44wy7dP/DD6HTiGSOirwIMHs2vPyyTbirWjV0GkmHf/wDVq6EIUNCJxHJnPx82Gcf2Guv0ElU5CWgQYPsEv3VV4dOIuly9NFw4YVw772wZEnoNCKZEZHtc6AiL6Hk5MCUKVrFZ4O//x02bIBbbw2dRCQzVOQl62kVnz2aNoUePWDUKPj669BpRNIvP98O2YoAFXnJvJwcmDoVrrsOqlQJnUYyYeBA67i/887QSUTSa9UqWL1aK3nJYjffDNWrQ+/eoZNIptSvD507w5gxdj6BSFJFqLMeVOQl02bNgmnTtIrPRtdfb2Nu77ordBKR9InIOfIFVOQlswYNslX8VVeFTiKZtv/+8Mc/wogRNvZTJIm0kpesVbCKHzBAq/hsdcMNNtP7nntCJxFJj/x8O0O+Zs3QSQAVeUmnvDzo1w9q1YLy5eH3v4fKlaFNm9DJJJQDD7R98w89BN9/HzqNSOoVdNY7FzoJEPEi75xr4Jx73Tk33zn3qXOub+hMUkxTpsDxx1tRf+cdeP112yvdogWcdpp9XbLTDTfATz/BAw+ETiKSehHaIw8RL/LAJuB/vfcHA8cDvZ1zhwTOJLuSlwedOsGkSTB4MDRpYgNRata0z02aZF/PywudVEI47DDo0AHuv18z7SV5VOSLz3u/xHv/wdY//wjMB+qFTSW7NHQodO9uq3aAt9+GV16xe/F77mmf79bNLtlKdrrxRivw+h2QJFm3Dr77TkW+NJxzjYHfArPDJpFdmjgRunYt/PiWW2wV37Nn4ee6dbPHSXY6+mj4wx+sAe+nn0KnEUmNiG2fg5gUeedcFeAZ4Frv/eoivt7DOTfHOTdn+fLlmQ8o21uxovCX/IMPYPp06N/fVvEFGja0x0n2+stfrPluxIjQSURSI2Lb5yAGRd45VxEr8I97758t6jHe+5He++be++Y1atTIbED5terVC3/ZhwyxA2i2XcWDveKtXj3z2SQ6jj8eWrWy35Gffw6dRqTsVORLxjnngDHAfO+9NtbGxSWX2PjSr76Cf/7TCvzee2//mNGj7XGS3f7yF7uHOWZM6CQiZZefb9uF60WndaxC6AC70BK4DJjrnPto6+du8N6/HDCT7MrVV9sqbcEC+4W/9trtvz5rlhX5nJww+SQ6TjkFTjoJ7rjDmjV32y10IpHSy8+3Al8hOqU10it57/2/vffOe3+E9/6orW8q8FHXpAk8+CA88wwcfLBdit240bbMDRwIZ58NEybY40T++ldYvNh+J0TiLC/PxjdHSKSLvMTY55/b+6OOgpYtbShOy5Y20jQnB9q2DZtPoqNVKzj2WLj9dti0KXQakdL78kto1ix0iu1E55qCJMeaNbZX/pxz4JFHQqeRqHPO9s2fc45d/bnwwtCJREpu9Wo7eCliRV4reUm9sWNta9SAAaGTSFy0a2dz7YcMAe9DpxEpudxce68iL4m2aRPcfbddmj/hhNBpJC7KlbNZCu+/DzNnhk4jUnIq8pIVnn7aOky1ipeS6tTJZifcfXfoJCIlV1DkI9ZQrCIvqeO9bYU6+GC7/CpSEpUr2/bLF18sbNwUiYvcXKhf336PI0RFXlLnlVfg44/huuvs8qtISV11Fey+O9x7b+gkIiUTwc56UJGXVLrzTqhbV5PspPRq1IDLL7ddGcuWhU4jUny5uSrykmDvvw+vvmrT7TS1TMqiXz+bp6BjaCUuVq2yA7dU5CWx7rwT9toLrrwydBKJu4MOsqmIw4bB2rWh04jsWkQ760FFXlIhLw/+9S/o1csKvUhZ/e//2spIo24lDlTkJdHuuccOZOjbN3QSSYqTToJjjrHfrS1bQqcR2bncXJvceMABoZP8ioq8lM3KlTBuHFx2GdSpEzqNJIVztprPzbUtdSJR9uWX0KCB7QyJGBV5KZtRo+yUOa3iJdU6doRGjTQcR6Ivop31oCIvZbFpk3VAn3YaHH546DSSNBUq2G6Nt96C2bNDpxHZMRV5SaTnnoNFi7SKl/Tp2hX23lureYmulSvtTUVeEuf++63R5A9/CJ1EkqpqVduW+cwz8NVXodOI/FpBZ33TpmFz7ICKvJTO++/D229Dnz5QvnzoNJJk11xjY5Lvuy90EpFfi/D2OVCRl9K6/36oUgU6dw6dRJKuXj24+GIYMwb++9/QaUS29+WX9iI0gtvnQEVeSmPpUnjySSvwe+8dOo1kg/79Yc0aGDs2dBKR7eXmQsOGkR3nrSIvJffww9ZZ36dP6CSSLY46Ck480XZzbN4cOo1IoQh31oOKvJTU+vUwfDicdVakf7Elgfr0sea7l18OnUTEeK8iLwnz1FN2BKi2zUmmnXee3Z9/8MHQSUTM99/bCXQR7awHFXkpCe+t4e6QQ6BVq9BpJNtUrGiHIL3yCsyfHzqNiDXdgVbykhBvvw0ffGBbmpwLnUayUffuUKkSDB0aOolI5LfPgYq8lMT998O++9phNCIh1KwJF10EjzwCP/wQOo1ku9xc2z63//6hk+yQirwUz8KFNsa2e3fYY4/QaSSb9elj2+nGjw+dRLJdbi40bmxXlyJKRV6K56GH7H3v3mFziDRvDi1a2CV7nTUvIeXmRrrpDlTkpTjWrLEjZc87z4Y+iITWp481PU2dGjqJZKsYbJ8DFXkpjsces3Gi2jYnUdGxI9Sure10Es6KFbB6tYq8xJz38MADcPTR0LJl6DQiplIl6NnTVvILFoROI9koBp31oCIvu/Lmm/DZZ3Z5VNvmJEquvNL2zhf0i4hkkoq8JMKwYVCtGlx4YegkIturXRsuuADGjYMffwydRrJNbq4ds924cegkO6UiLzv27be2ba5LF6hcOXQakV/r08cK/COPhE4i2aZg+1zFiqGT7JSKvOzY6NF22lzPnqGTiBTtuOPgmGO0nU4yLwad9aAiLzuycSOMGAFt2kCTJqHTiOxYnz7wxRcwY0boJJItvLctnCryElsvvmiX66+6KnQSkZ274AIbd6vtdJIpy5bZbSIVeYmtYcNs8M1ZZ4VOIrJzu+1mnfaTJ0NeXug0kg1i0lkPKvJSlM8/h1dftXvx5cuHTiOya1deaQeFjBgROolkg4IiH/GRtqAiL0V5+GHrGO3aNXQSkeKpVw/OPhvGjoV160KnkaTLzYUKFSK/fQ5U5OWXCk73Ov98u88pEhe9esH338O//hU6iSRdbq4dL1uhQugku6QiL9t74gk7p1sNdxI3p59ul0+HDw+dRJIuJp31oCIv2/LeRoQecQSccELoNCIlU66c9ZG88w588knoNJJUMTl9roCKvBSaPRs++shW8ZpTL3F0xRXWba/VvKTL0qV2W1NFXmJn2DCoWhUuvTR0EpHS2W8/O2fhscc0z17SI0ad9aAiLwWWL4ennoLLL4cqVUKnESm9Xr3gp5+s0IukWoz2yIOKvBQYOxY2bLAnSJE4O+44OOoou2Tvfeg0kjRffmlbjBs2DJ2kWFTkBTZvtr3xv/89HHJI6DQiZeOcvVidO9ea8ERSKTcXDjggFtvnQEVeAKZOha+/1rY5SY5LLrH+EjXgSarFqLMeVOQFrOGudm0499zQSURSo0oV6y95+mnrNxFJhRidPldART7bff01TJkC3bvbfSaRpOjZ0/pMxo0LnUSS4ttvYe3a2HTWg4q8jBpl9zC7dw+dRCS1Dj0UTj7ZDq3ZsiV0GkmCmHXWg4p8dtu40brqzzoLGjQInUYk9Xr1gv/8B6ZPD51EkuDLL+29irzEwqRJNr3pyitDJxFJjw4dbEBO795Qq5YdnVyrFvTrp7PnpeRyc6FSpVgtiiJf5J1zY51zy5xz80JnSZwRI+yXtW3b0ElE0uPVV+0e6ldf2el069fbtrrKleH4460fRaS4cnOhSRN7sRgTkS/ywHigTegQiZOXB6+8At26xeoXVqTY8vKgU6fCyXfTp9ve5iZNYPBgu5LVqZNW9FJ88+fDgQeGTlEikS/y3vuZwMrQORJn1Cg7tatr19BJRNJj6FBrKO3QwfpORo+2PpQCLVrYi9yHHgqXUeJj3TpbyR9+eOgkJRL5Ii9pULCtqF07qFcvdBqR9Jg4sfBFbK9e1n/y/PPbP6ZbN3ucyK58/rlNB1WRzzznXA/n3Bzn3JzlGnyxa88/D8uWqeFOkm3FCmjUyP7cpo3NGh85cvvHNGxojxPZlblz7b2KfOZ570d675t775vXqFEjdJzoGzHCntzOPDN0EpH0qV4d8vPtz+XL26p9xozCbVAACxfa40R2Zd4866yP0SAcSEiRlxLIzYXXXrN7lWq4kyS75BIYM6bw4y5d7Hd+1KjCz40ebY8T2ZW5c+Hgg2M3GXSnRd45F/xgcefcE8As4CDn3GLnnDrFymLkSHui69IldBKR9Lr6aivos2bZx/XqWR/KuHHWlzJrlhX53r3D5pR4mDs3dpfqYdcr+Y+dcy0ykmQHvPcXe+/reO8reu/re+/H7Pp/JUVavx7Gj4ezz4a6dUOnEUmvJk1gwgT7fR840LbKde1qB9ZccIF9fsIEe5zIzqxaBYsXw2GHhU5SYrsq8g2Bmc65W5xzurYbd889Z01GariTbNG2LeTk2Avcli3tpMVy5eCDD+zzGgQlxTFv6yy2BK7kTwD+A9wIvOOci1fHgWxvxAjYf38444zQSUQyp0kTuOce20K3eTMMGgSLFunQGim+mHbWwy6KvPf+PeAoYCRwDPChc65HJoJJin3xBbzxhjXclVO/pWSxohrwRHZm3jzYe2+oXz90khLb5bO99/5n730voB2wBhjunHvBOXeQc65hUW9pTy0lN3KkjfTs3Dl0EpGw6ta1+/HjxtllfJFdmTvX7sc7FzpJiRV7See9fxk4FJiKFfzPgK+KePtP6mNKmaxbZw13554LtWuHTiMSXo8e1p/yywl4Ir/kfWw766Hk++SP2PrmgO+AhUW8LUplQEmBZ56BlSvVcCdSoHVraNzY+lREdubbb627Poad9VDMIu+cq+icuwt4BagB/Bmo573fv6i3dAaWUhgxwpqPTjstdBKRaChXzvpTXn8dFiwInUaiLMZNd1CMIu+cOxR4D+gPfA4c570f4r336Q4nKTB/Prz1lhruRH6pc2frU1EDnuxMQZFP4kreOdcXK/CHAw8Cv/Pef5yJYJIio0bZGEY13Ilsr04da8AbP14NeLJj8+ZZs2a1aqGTlMqulnb3Av8F2nrv+3rv9S8hTtatg0cesYa7mjVDpxGJniuvtAa8Z58NnUSiKsZNd7DrIv8ccLj3fnomwkiKPfecNdz10GgDkSK1amUDotSAJ0XZtAk++yy2l+ph18NwOnrvV2YqjKTYyJH2BKaGO5GiFTTgvfmmDYwS2VZent3KSfBKXuJqwQJNuBMpjoIGvJEjQyeRqIl5Zz2oyCfX6NGacCdSHLVrW9/K+PHWxyJSYO5cWyQdfHDoJKWmIp9E69fbyM727TXhTqQ4evSw/pVnngmdRKJk3jxo2hQqVw6dpNRU5JPohResY1gNdyLFc/rpcMAB2jMv24t5Zz2oyCfTqFHQqJGOlBUpLjXgyS+tXQtffhnrznpQkU+evDyYMQO6dbPjNEWkeK64QhPwpND8+XY4jVbyEimjR9uqRA13IiVTuzacc44m4IlJQGc9qMgny8aN1nDXrh3Uqxc6jUj89OgB339vg6Qku82dC7vvbod7xZiKfJK8+CJ8950a7kRKSxPwpMC8eXDIIbG/7akinyQjR0L9+tCmTegkIvFU0ID3xhs6gjbbJaCzHlTkk+Prr2H6dOjaNfavPEWC0hG08v33sGRJ7DvrQUU+OcaMAeegS5fQSUTirXZtHUGb7ebNs/dayUskbNoEY8dC27bQsGHoNCLx16OHDZR6/vnQSSSEgs56reQlEl5+Gb791u4likjZnXGGDZTSoTXZae5c2HdfqFs3dJIyU5FPgpEjoU4d+MMfQicRSYaCBrzXXoPc3NBpJNPmzbNL9c6FTlJmKvJxt2gRTJliDXcVKoROI5IcXbpYE+vo0aGTSCZ5b0U+AZfqQUU+/saMsV/Krl1DJxFJljp1rAFv3DjYsCF0GsmUhQth9epENN2Biny8bdpkRf7MM6Fx49BpRJKnRw9YvtxOdpTskKDOelCRj7epU2HxYk24E0mXggY8TcDLHgWd9YceGjZHiqjIx9nIkbant1270ElEkql8eTvR8dVX7dhRSb5586BBA9hnn9BJUkJFPq4WLYLJk+1efMWKodOIJFfnzmrAyyYJGWdbQEU+rsaOVcOdSCbUq2dXy9SAl3wbN9o58gnprAcV+XjavNlWFa1b24lZIpJePXrAsmVqwEu63Fwr9FrJS1BquBPJrDPPtJHRmoCXbAVNdyryEtSIEVCrFrRvHzqJSHYoX94m4M2YoQa8JJs71/6//s1vQidJGRX5uFm82BruunRRw51IJhUc46zVfHLNmwcHHgi77RY6ScqoyMfN2LGwZYsOoxHJtDp14JxzrAFPR9Am00cfJepSPajIx4sa7kTCuvJKO4L22WdDJ5FU++47yM+HY48NnSSlVOTjZNo02x+vhjuRMFq1ggMOgIcfDp1EUm32bHt//PFhc6SYinycFDTcnX126CQi2alcOXuRPXOm7aeW5MjJsZM8jz46dJKUUpGPi2++gZdesulbargTCafg36Aa8JJl9mw44gioXDl0kpRSkRl3kEgAABdCSURBVI8LNdyJREPNmtChA4wfDz//HDqNpMLmzfDee4m7VA8q8vFQ0HB3xhl2P1BEwurZE1atgqefDp1EUmH+fPjxRzjuuNBJUk5FPg6mTYOFC9VwJxIVp5wCBx2kBrykSGjTHajIx8PIkXaJUA13ItHgnL3onjWrcBSqxFdODuy7LzRrFjpJyqnIR9233xY23FWqFDqNiBS4/HKbjDZiROgkUlazZ9uleudCJ0k5FfmoGz3a7smr4U4kWvbbD84/Hx59FNasCZ1GSuvHH22cbQLvx4OKfLRt2mSX6lu3hiZNQqcRkV/q2RNWr4YnnwydREprzhzwPpH340FFPtomT7b98b16hU4iIkU54QQ49FA14MVZTo69T9g42wIq8lE2fDjUqwft2oVOIiJFcc5W83PmwPvvh04jpTF7tp08V61a6CRpoSIfVXl5tnWue3cbtSgi0fTHP9qUNDXgxY/3hU13CaUiH1UjR9rZ1d26hU4iIjuzzz5w0UUwcaLdn5f4WLgQli5VkQ/JOdfGOfeFc+5L59z1ofNkxPr1Nsb27LPtcr2IRFvPntZh//jjoZNISSR4CE6BSBd551x54CGgLXAIcLFz7pCwqTLgmWfszGo13InEwzHHwG9/C8OG2SVgiYecHNh9dzuYJqEiXeSBY4Evvff/8d5vAJ4EzgmcKf2GD4emTeH000MnEZHicA5697b91m+9FTqNFNfs2fC73yX6ZM+oF/l6wKJtPl689XPbcc71cM7Ncc7NWb58ecbCpcXcufDvf8OVV9rZ1SISDxdfbKNRH3oodBIpjg0bbEdEgu/HQ/SLfFEzBn91Lcx7P9J739x737xGjRoZiJVGI0bYqMzOnUMnEZGS2GMP+3f77LOwZEnoNLIrn3xi/U8Jvh8P0S/yi4EG23xcH/g2UJb0++knmDABLrjARmaKSLz07GmTKkeNCp1EdqVgCI5W8kG9BzRzzu3vnKsEXARMCpwpfSZOtDnKPXuGTiIipdGsGZx5pl2R27gxdBrZmdmzoU4daNBg14+NsUgXee/9JuBqYBowH/in9/7TsKnSxHsbjXnEEdCiReg0IlJavXvb6ZEvvBA6iexMTk5iT57bVqSLPID3/mXv/YHe+ybe+9tC50mbd9+FDz+0bXMJ/6UTSbSzzoJGjdSAF2Xffw9ffpn4S/UQgyKfNYYPhypV4NJLQycRkbIoX95erL/xBnyazAuPsffuu/Y+4U13oCIfDStXwlNP2QzsqlVDpxGRsura1XbJDBsWOokUJSfHtig3bx46SdqpyEfBI4/AunVquBNJiurV4cILbbeM5tlHz+zZcNhhdvU04VTkQytouGvRAo48MnQaEUmV3r1tW+yjj4ZOItvasiXxJ89tS0U+tNdegwULNKdeJGmOPdYuBz/0kObZR0luLqxalRX340FFPryhQ+3S3vnnh04iIql21VUwf7414Uk0ZMkQnAIq8iF9/TVMmgQ9ethJSCKSLBddBNWqaTtdlMyeDXvtBQcfHDpJRqjIhzRsmO2J16V6kWSqXBm6dIHnn4dvvgmdRsBW8scckzUHgGXHf2UUrVlj8607dID69UOnEZF06dXLmr1GjgydRNautYNpsuRSPajIh/P449b8cc01oZOISDodcAC0bWtFfsOG0Gmy2wcfwObNWdN0ByryYXgPDz4IRx0FLVuGTiMi6da7NyxdCs89FzpJdsuypjtQkQ/jjTdg3jxbxWtOvUjytWljK/oHHgidJLvNng377w81a4ZOkjEq8iE88IBtm7v44tBJRCQTypWzF/XvvFM4N10yy3uYNSurVvGgIp95BdvmunfXtjmRbNKli23duvfe0Emy0+ef2w6HU08NnSSjVOQzTdvmRLJT1arQrRs8/TQsWhQ6TfaZNs3en3lm2BwZpiKfSWvXwujRtm2uQYPQaUQk0/r0scvGQ4eGTpJ9pk6Fgw6CRo1CJ8koFflMevxx+O9/7R+6iGSfxo3tRf7IkXZ4jWTGzz/Dm29m3SoeVOQzx3truDvqKDjxxNBpRCSUfv1sRsYjj4ROkj3eesuO827TJnSSjFORz5Q337Rtc336aNucSDZr0cJOqLv/fpuEJ+k3bRrsthucckroJBmnIp8pDzwA++2nbXMi2c45W83n5sLkyaHTZIepU+Gkk2CPPUInyTgV+UzIz4cXXrDT5ipXDp1GRELr2NHOrLjnntBJkm/RIvjss6y8Hw8q8pmhbXMisq2KFW04zhtvwEcfhU6TbNOn2/ssvB8PKvLpt3atnTZ33nnaNicihbp3hz331HCcdJs2DerVg0MPDZ0kCBX5dHvsMds2p9PmRGRb++wDnTvDE0/AkiWh0yTTpk3wyivQunXWNjyryKfT5s1w991w9NHaNiciv9a3rxWiYcNCJ0mm996z7YpZej8eVOTTa9IkWLAA/vznrH0VKSI70bQptG8PDz9sA1sktaZNs+feVq1CJwlGRT5dvIc777TjJTt0CJ1GRKKqXz9YscJu7UlqTZtmMwn22y90kmBU5NPl7bchJwf694cKFUKnEZGoOuUUm4R53322OJDUWLnSjvXN4kv1oCKfPnfeaa8eO3cOnUREoqxgOM5nnxVu95KymzHDJgqqyEvKffYZvPiijbDNwglLIlJCF10EtWvDXXeFTpIc06bB3nvb5fospiKfDnfdZZPtevcOnURE4qBSJVvNz5hhl5ilbLy3In/GGVl/u1RFPtW++cYaaLp2herVQ6cRkbjo1Qv23Rduuy10kvj77DN7Ls7yS/WgIp96999v++P79w+dRETipGpV2zc/aRLMnRs6TbxNnWrvVeRV5FPqhx9sv+sFF8D++4dOIyJx06cPVKkCgweHThJv06bBwQdrlDgq8qk1YgT8+CNcd13oJCISR9WqwVVXwT//aYO0pOTWroWZM7WK30pFPlXWr7d9rq1a2RhbEZHS6N/fGvH+8Y/QSeJp5kx7Ps7SU+d+SUU+VR5/3A6Z0CpeRMqiVi07oe7RRyE/P3Sa+Jk6FXbfHU4+OXSSSFCRT4UtW2DIEDjySNuyISJSFtddZ0NyhgwJnSR+pk2zAl+5cugkkaAinwovvQSffw4DBuggGhEpuwYN4PLLYfRoHUNbEgsX2nOx7sf/PxX5VLjzTmjUCM4/P3QSEUmKP/8ZNm6Ee+4JnSQ+pk2z97of//9U5MvqnXfsMJr+/aFixdBpRCQpmja1cbfDh8P334dOEw9Tp0L9+rZ9TgAV+bK79Vbb9tKlS+gkIpI0N9wAa9bYkC3ZufXr4dVX7VK9bpv+PxX5snjnHXvlOGCADbAQEUmlQw+F886DBx+E1atDp4m2yZNtIFnHjqGTRIqKfFn89a9QsyZcfXXoJCKSVDfeCKtWwbBhoZNE27hxULcutG4dOkmkqMiX1uuvw2uvwcCBsOeeodOISFL97nfWSHbPPTbNTX5t6VKYMgUuuwzKlw+dJlJU5EvDe1vF160LPXuGTiMiSXfjjbB8OYwaFTpJND3+uB0MdvnloZNEjop8aUyfbh31N95ok5VERNLpxBPhlFNs1O2aNaHTRIv3MH48HHecuuqLoCJfUgWr+EaN7Mx4EZFMuP12uyytffPb++ADmDcPrrgidJJIUpEvqRdfhPfes0K/226h04hItmjRAjp0sOFb330XOk10jB9vz8UXXhg6SSSpyJfEli3wt79BkybQqVPoNCKSbW6/HX7+GW65JXSSaFi/HiZOhHPPhX33DZ0mklTkS+LZZ+Hjj+HmmzXdTkQy78AD4corYcQI+OKL0GnCe+klWLlSl+p3wnnvQ2dIqebNm/s5c+ak/i/evBkOP9z+PHeutmmISBjffWcjb1u3hmeeCZ0mrPbt7Z78woVZ/ZzsnHvfe9+8qK9pJb8jeXnQr5+d7Vy+vI2unT8fevXK6l8mEQmsVi2bsvnsszZ1M1sV7I3v1EnPyTuhIl+UKVPg+OPtPOJ33rEtK/vua9PtBg2yr4uIhNK/P9SubcU+YVdji01744slskXeOXe+c+5T59wW51yRlyHSIi/PXhlOmgSDB1uT3cSJkJ8PI0dad32nTvY4EZEQ9tzTmu/efhteeCF0mswr2Bt//PHwm9+EThNpkS3ywDygAzAzo9916FDo3t22qwBs2GD/mJo3h7PPts936wYPPZTRWCIi2+nc2Ya/FJw7n020N77YIlvkvffzvfeZbx+dOHH7ITdjx9oq/tZbC48v7NbNHiciEkqFCnDHHbBgAYwZEzpNZmlvfLFFtsiXhHOuh3NujnNuzvLly8v2l61YYdPsCixbBqeeamcUF2jY0B4nIhJSu3Zw8slw003w44+h02RGwd74886DffYJnSbyghZ559wM59y8It7OKcnf470f6b1v7r1vXqNGjbKFql7dVu4F/vY3mDGjcBUPtl2jevWyfR8RkbJyzibgLVsGd98dOk1mvPii9saXQNAi771v5b0/rIi3cJ0kl1zy60tf5X7xYxo92h4nIhLaccfB+efDXXfBkiWh06Tf+PF2AmirVqGTxEIiLten1NVX23GOs2YV/fVZs6zI9+6d2VwiIjsyeLBdxr755tBJ0mvJEpg6VXvjSyCyRd45d55zbjHQApjsnJuWkW/cpAlMmGCd9AMH2la5jRvt/cCB9vkJE+xxIiJR0LSpLTxGjbJtdUmlvfElprG2O5KXZ9vkJk60Jrvq1e0Sfe/eKvAiEj0//QSHHWZd5x99ZMO8ksR7Gy1eteqOr7RmKY21LY0mTezc5qVLYdOmwnOcVeBFJIqqVLFbiQsW2GTOpJkyBT79dPstzrJLKvIiIknRqpXN8RgyBN57L3Sa1Nm82Ub4Nm2qY75LSEVeRCRJ7roL6tSBLl2sGS8Jxo+3Vfztt0OlSqHTxIqKvIhIkuy9t503P2+edd3H3Zo1Nq/k+OOhY8fQaWJHRV5EJGn+8Ae47DIr8h9/HDpN2dx3H3z7rd2C2HYomRSLiryISBLddx/st58dZBPXA2yWLbP5/OeeCyeeGDpNLKnIi4gkUbVqMGwYfPih3aePo1tugbVr7V68lIqKvIhIUnXoABdcYJPwPvssdJqSWbDAegu6d9eZ8WWgIi8ikmQPPmgDZLp0sa1ocXHDDTbYJ+mjetNMRV5EJMlq1rRCP3s23H9/6DTFM2sWPPOM7Y2vVSt0mlhTkRcRSbqLLio8j+Ott0Kn2Tnv4brroHZt6N8/dJrYU5EXEUk652DcONh/fzjnHPjii9CJduz55+2QnUGDbFSvlImKvIhINqhWDV5+GSpUgLZtbXta1GzcCNdfDwcfbD0EUmYq8iIi2eKAA+Cll+zArfbtbXtalBQcsHPHHfZiRMpMRV5EJJsceyw88YQdYHPppdHpuF+xwjrpTz4Z2rULnSYxVORFRLLNOefYRLznn4f//d/QaWD1amjTxt7fe6/G16aQroeIiGSja66Br76yYt+4MVx7bZgcP/9snf8ffwzPPQdHHx0mR0KpyIuIZKu77oL8fNuq1rChTcjLpI0b4cILYeZMeOwxXaZPA12uFxHJVuXLW3E99li7P5+Tk7nvvWWLddC/+CI89BBccknmvncWUZEXEclme+wBkyZB3bp2RO0LL6T/e3oPffvaC4y//x169Ur/98xSKvIiItmuZk2YPh0aNbJjXXv0gDVr0vf9broJhg61pr8bbkjf9xEVeRERAZo0scv1AwbYfvXf/hbefTf13+fee+HWW6FrVxgyRJ30aaYiLyIiplIlG0Tz2muwbh2ccIJdTt+0KTV//7hx1uTXsaMdI6sCn3Yq8iIisr3f/x4++cTOov/rX+3jr74q3d+1ZQtMm2aFvVs3aN0aHn/cmv4k7VTkRUTk1/bZByZOtII8dy4ceaStvr/5xhrndmXpUrj9dmja1AbdzJwJf/oTPPusnRMvGaF98iIismOXXAItW0KnTtCzp32uRg046ii7b1/wvlkzu/z+6qv2YuCFF+wy/+9/D4MHw3nnqbgHoCIvIiI716iR3afPyYEPP7S3jz6yaXkbNthjKle21f+SJXbi3TXXWJf+QQeFzZ7lVORFRGTXype3FX3LloWf27ABPv+8sOgvXmxb8Dp2hN13D5dV/p+KvIiIlE6lSnDEEfZ2+eWh00gR1HgnIiKSUCryIiIiCaUiLyIiklAq8iIiIgmlIi8iIpJQKvIiIiIJpSIvIiKSUCryIiIiCaUiLyIiklAq8iIiIgmlIi8iIpJQKvIiIiIJpSIvIiKSUM57HzpDSjnnlgP5Kf5rqwMrUvx3Zhv9DMtOP8Oy08+wbPTzK7t0/Awbee9rFPWFxBX5dHDOzfHeNw+dI870Myw7/QzLTj/DstHPr+wy/TPU5XoREZGEUpEXERFJKBX54hkZOkAC6GdYdvoZlp1+hmWjn1/ZZfRnqHvyIiIiCaWVvIiISEKpyO+Cc66Nc+4L59yXzrnrQ+eJG+fcWOfcMufcvNBZ4sg518A597pzbr5z7lPnXN/QmeLGObe7c+5d59zHW3+Gg0JniivnXHnn3IfOuZdCZ4kj59zXzrm5zrmPnHNzMvI9dbl+x5xz5YEFwBnAYuA94GLv/WdBg8WIc+5k4Cdggvf+sNB54sY5Vweo473/wDlXFXgfOFe/g8XnnHPAnt77n5xzFYF/A3299zmBo8WOc64/0BzYy3vfLnSeuHHOfQ00995nbNaAVvI7dyzwpff+P977DcCTwDmBM8WK934msDJ0jrjy3i/x3n+w9c8/AvOBemFTxYs3P239sOLWN61uSsg5Vx/4AzA6dBYpPhX5nasHLNrm48XoCVYCcc41Bn4LzA6bJH62Xmb+CFgGvOK918+w5O4DBgBbQgeJMQ9Md86975zrkYlvqCK/c66Iz2kFIBnnnKsCPANc671fHTpP3HjvN3vvjwLqA8c653TrqAScc+2AZd7790NnibmW3vujgbZA7623M9NKRX7nFgMNtvm4PvBtoCySpbbeR34GeNx7/2zoPHHmvV8FvAG0CRwlbloCZ2+9p/wkcJpz7rGwkeLHe//t1vfLgOewW8JppSK/c+8BzZxz+zvnKgEXAZMCZ5IssrVpbAww33t/T+g8ceScq+Gc22frnysDrYDPw6aKF+/9QO99fe99Y+x58DXv/R8Dx4oV59yeW5tncc7tCbQG0r7rSEV+J7z3m4CrgWlYw9M/vfefhk0VL865J4BZwEHOucXOua6hM8VMS+AybOX00da3s0KHipk6wOvOuU+wF+6veO+1BUwyrRbwb+fcx8C7wGTv/dR0f1NtoRMREUkoreRFREQSSkVeREQkoVTkRUREEkpFXkREJKFU5EVERBJKRV5ERCShVORFpMScc92cc945N2Unj5m89TFXZTKbiBRSkReREvPej8amP7ZxzvX+5dedc72As4Ap3vthmc4nIkbDcESkVJxzNbGxnHsCR3vvv9j6+QOBD4GfgcO890vDpRTJblrJi0ipbD1kozuwB/CYc66Cc64C8NjWz/VQgRcJq0LoACISX977F5xzY4EuwN+2fvoYYLxOzBMJT5frRaRMtp6s9THQcOunFgFHeO9/DJdKRECX60WkjLYW81uA8lvfeqnAi0SDiryIlMnWM9r/vM2nzg+VRUS2pyIvImV1J/Ab4H7gI6CLc6592EgiAronLyJl4JxrDUzFttIdAzQD5gCrsO1zKwLGE8l6WsmLSKk456oB44CNwB+99+u99/OAvwK1gIdD5hMRFXkRKb3hQF3gL977T7b5/N3AW0BH59wfgyQTEUCX60WkFJxzlwETgJnAqd77Lb/4+v7AJ8Am4HDv/eLMpxQRFXkRKRHnXEOsgDtsP3z+Dh7XDRgFvAKc6fVkI5JxKvIiIiIJpXvyIiIiCaUiLyIiklAq8iIiIgmlIi8iIpJQKvIiIiIJpSIvIiKSUCryIiIiCaUiLyIiklAq8iIiIgmlIi8iIpJQ/wdVQkf+H7EYcQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 做图比较已知数据点与插值的数据\n",
    "\n",
    "plt.figure(figsize = (8, 6))\n",
    "\n",
    "# 已知数据点\n",
    "plt.scatter(xiList, yiList, c = 'white', edgecolors = 'red', s = 100)\n",
    "plt.xlabel(\"X\", fontsize = 20)\n",
    "plt.ylabel(\"Y\", fontsize = 20)\n",
    "\n",
    "# 插值的数据\n",
    "plt.plot(xList, yList, 'r-')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 4. 插值任意函数\n",
    "\n",
    "* 这里以插值sin(x)进行举例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义已知数据点\n",
    "xiList = np.arange(0, np.pi, 0.1)\n",
    "yiList = np.sin(xiList)\n",
    "\n",
    "# 进行插值计算\n",
    "xList = np.arange(0, np.pi, 0.01)\n",
    "yList = [interpLag(x, xiList, yiList) for x in xList]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x25495bc3c88>]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 做图比较\n",
    "plt.figure(figsize = (8, 6))\n",
    "plt.scatter(xiList, yiList, c = 'white', edgecolors = 'red', s = 100)\n",
    "plt.xlabel(\"X\", fontsize = 20)\n",
    "plt.ylabel(\"Y\", fontsize = 20)\n",
    "plt.plot(xList, yList, 'r-')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 给出任意一个其他函数，并进行插值\n",
    "- 用markdown给出需要插值的函数的形式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "转换成markdown，并写出函数形式"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 进行插值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 在线面给出对应的代码\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# 在上面给出对应的代码"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 做图比较"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 在线面给出对应的代码\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# 在上面给出对应的代码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
